//
//  EYBluetoothDeviceManager.h
//  ClondHearingBlue
//
//  Created by Edison.3 on 17/5/15.
//  Copyright © 2017年 Edison.3. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreBluetooth/CoreBluetooth.h>


typedef NS_ENUM(NSInteger,EYBleGunCommandType){

    EYBleGunCommandTypeLeftFront=1,//左前
    EYBleGunCommandTypeLeftBack,//左后
    EYBleGunCommandTypeRightFront,//右前
    EYBleGunCommandTypeRightBack,//右后
    EYBleGunCommandTypeTrigger,//扳机
};

@protocol EYBluetoothDeviceManagerDelegate <NSObject>

@optional
/**
 代表手机蓝牙开关状态
 
 @param isBluetoothPoweredOn 蓝牙是否已关闭
 */
- (void)EYBluetoothDeviceDidUpdateState:(BOOL)isBluetoothPoweredOn;




/**
 扫描到的外设

 @param peripheral 蓝牙设备对象
 @param data 包含蓝牙设备广播信息或者蓝牙搜索回应数据的字典容器
 */
-(void)EYBluetoothDevicePeripheral:(CBPeripheral *)peripheral didDiscoverWithBroadcastData:(NSDictionary *)data;

/**
 连接外设成功

 @param peripheral 连接上的外设
 */
-(void)EYBluetoothDeviceDidConnected:(CBPeripheral*)peripheral;



/**
 连接外设失败

 @param peripheral 连接失败的外设
 */
-(void)EYBluetoothDeviceConnectedFail:(CBPeripheral *)peripheral;



/**
 外设断开连接

 @param peripheral 断开的外设
 */
-(void)EYBluetoothDevicePeripheralDidDisconnect:(CBPeripheral*) peripheral;



/**
 Global等准备就绪，拿到了写 读  订阅的特征值，比如电压功能，等等都在这里回调之后初始化
 */
-(void)EYBluetoothDeviceManagerIsReady;


#pragma mark -  枪的命令


//-(void)bluetoothDeviceDidReceiveCommand:(Byte *)byte length:(NSUInteger)len;


/**
 枪的命令

 @param gunCommand 命令的类型
 */
-(void)EYBlueReceiveGunCommand:(EYBleGunCommandType)gunCommand;

@end




@interface EYBluetoothDeviceManager : NSObject



/**
 是否自动回连
 */
@property(nonatomic,assign)BOOL isAutoConnect;


/**
 是否正在扫描
 */
@property(nonatomic,assign)BOOL isOnScaning;
/**
 蓝牙开关状态 
 yes：开启的状态
 no：关闭的状态
 */
@property(nonatomic,assign)BOOL isBluetoothPoweredOn;


/**
 是否连接状态
 yes:当前连接上蓝牙外设
 no:当前处于空状态
 */
@property(nonatomic,assign)BOOL isConnected;


/**
 当前连接上的外设
 */
@property(nonatomic,strong)CBPeripheral * connectedpPeripheral;

/**
 单例初始化deveceManager
 主要用于蓝牙连接，断开，扫描，停止扫描，系统蓝牙开关状态改变的回调
 
 @return EYBluetoothDeviceManager对象
 */
+(instancetype)sharedInstance;


#pragma mark - 初始化代理
/**
 初始化devicemanager的代理
 
 @param delegate delegate
 */
-(void)initBluetoothDeviceManagerWithDelegate:(id<EYBluetoothDeviceManagerDelegate>)delegate;


#pragma mark - 蓝牙用户操作

/**
 开始扫描
 */
-(void)startScan;

/**
 停止扫描
 */
-(void)stopScan;

/**
 主动连接设定的蓝牙设备
 
 @param peripheral 蓝牙设备对象
 */
-(void)connect:(CBPeripheral*)peripheral;


/**
 主动断开指定的蓝牙设备
 
 @param peripheral 蓝牙设备对象
 */
-(void)disconnect:(CBPeripheral*)peripheral;
@end
